2 POKE56,56:CLR:POKE53371,0:POKE788,49 4 POKE53281,0:POKE53280,0:PRINT"[147]":TI$="000000":GOSUB60000 6 DV=PEEK(186):IFDV<8THENDV=8 8 SYS57812"MAGIC SQ FONT",DV,0:POKE780,0:POKE781,0:POKE782,56:SYS65493 10 FORI=960TO1023:READJ:POKEI,J:NEXT 20 DATA255,252,0,128,4,0,128,4,0,128,4,0,128,4,0,128,4,0,128,4,0,128,4,0 30 DATA128,4,0,255,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 40 DATA0,0,0,0,0,0,0,0,0,0 50 GOTO480 54 : 55 :REM *** GETKEY ROUTINE *** 56 : 57 POKE214,23:PRINT:PRINT" [158][208]RESS [211][208][193][195][197] [158]TO CONTINUE":POKE198,0 58 GETA$:IFA$<>" "THEN58 59 RETURN 62 : 63 :REM *** CLEAR HALF SCREEN *** 64 : 65 FORI=217TO242:POKEI,PEEK(I)OR128:NEXT 66 POKE214,14:PRINT 67 FORI=0TO8:PRINTBL$:NEXT:PRINTBL$"" 68 POKE214,14:PRINT 69 RETURN 72 : 73 :REM *** DELAY LOOP *** 74 : 75 FORT=0TO500:NEXT:RETURN 87 : 88 :REM *** BOX ROUTINE *** 89 : 90 POKE214,Y:PRINT:POKE646,CB 100 PRINTTAB(X)TP$ 110 FORII=0TO4 120 PRINTTAB(X)M0$:PRINTTAB(X)M1$ 130 NEXT 140 PRINT"[145]"TAB(X)BT$ 150 RETURN 160 : 170 :REM *** FILL ROUTINE *** 180 : 190 POKE214,Y-1:PRINT:POKE646,CT 200 FORI=0TO4:PRINT"" 210 FORJ=0TO4 220 PRINTTAB(X+1+3*J)D$(I,J); 230 NEXT:NEXT:PRINT"" 240 RETURN 250 : 260 :REM *** SOLVE ROUTINE *** 270 : 280 K=(FNR(5)+1) 290 FORI=0TO4:FORJ=0TO4:D(I,J)=0:D$(I,J)="":NEXT:NEXT 300 FORI=0TO5:M(I)=0:NEXT 310 FORI=0TO3 320 M=FNR(5)+1:IFM(M)OR(M=K)THEN320 330 N(I)=M:M(M)=1:NEXT 340 FORI=0TO4 350 FORL=0TOE(U,I)-1 360 D(I,L)=N(4-E(U,I)+L):NEXT:P=0 370 FORL=E(U,I)+1TO4 380 D(I,L)=N(P):P=P+1:NEXT 390 NEXT 400 FORI=0TO4:D(I,E(U,I))=K:NEXT 410 IFU=0THENFORI=0TO4:FORJ=0TO4:F(I,J)=D(I,J):NEXT:NEXT 420 IFUTHENFORI=0TO4:FORJ=0TO4:D(I,J)=((D(I,J)-1)*5):NEXT:NEXT 430 FORI=0TO4:FORJ=0TO4:D$(I,J)=RIGHT$(STR$(D(I,J)),2):NEXT:NEXT 440 RETURN 450 : 460 :REM *** SETUP *** 470 : 480 POKE53281,0:POKE53280,0 490 X=RND(-TI):DEF FNR(X)=INT(RND(1)*X) 500 TP$="[176][192][192][178][192][192][178][192][192][178][192][192][178][192][192][174]" 510 M0$="[221] [221] [221] [221] [221] [221]" 520 M1$="[171][192][192][219][192][192][219][192][192][219][192][192][219][192][192][179]" 530 BT$="[173][192][192][177][192][192][177][192][192][177][192][192][177][192][192][189]" 535 BL$=" " 540 FORI=0TO4:READE(0,I):E(1,I)=4-E(0,I):NEXT 550 DATA3,0,2,4,1 560 V=53248 570 FORI=0TO4:POKEV+39+I,1:POKE2040+I,15:NEXT 580 POKEV+28,0:POKEV+29,31:POKEV+23,31 590 FORI=0TO1:FORJ=0TO4:READSP(I,J*2),SP(I,J*2+1):NEXT:NEXT 610 DATA114,68,42,84,90,100,138,116,66,132,226,68,42,84,250,100,202,116,18,132 620 FORI=1TO3:READW$(I):NEXT 630 DATA" [199][197][206][197][210][193][212][207][210] "," [212][213][212][207][210][201][193][204][160] "," [204][207][193][196][211][212][193][210] " 638 IFTI$<"000003"THEN638 640 : 650 :REM *** MENU *** 660 : 670 PRINT"[147]":POKE53272,31 680 PRINT" [159][212]HE [205]IGHTY [156][204][207][193][196][211][212][193][210]" 690 PRINT" [159]5X5 [205]AGIC [211]QUARE [199]ENERATOR" 700 PRINT" [155][193]LGORITHM BY [202]IM [205]ORAN" 705 PRINT" [208]ROGRAM BY [203]NEES [195]ALHOON" 710 POKE214,22:PRINT:PRINT" [154][213]SE [195][210][211][210] [213][208][154]/[196][207][215][206] [154]AND [210][197][212][213][210][206]" 720 X=12:Y=9:CB=7:GOSUB90 730 POKE214,10 740 FORI=0TO9:PRINTTAB(13)" ":NEXT 750 POKE214,12:PRINT 760 FORI=1TO3:PRINTTAB(13)"[153]"W$(I):PRINT:NEXT:Z=1 770 POKE214,10+2*Z:PRINT:PRINTTAB(13)""W$(Z)"[145]":POKE198,0 780 GETA$:IFA$<>"[145]"ANDA$<>""ANDA$<>CHR$(13)THEN780 790 IFA$=CHR$(13)THEN840 800 PRINTTAB(13)"[153]"W$(Z) 810 IFA$="[145]"THENZ=Z-1:IFZ<1THENZ=3 820 IFA$=""THENZ=Z+1:IFZ>3THENZ=1 830 GOTO770 840 ONZGOTO880,2030,1260 850 : 860 :REM *** DRAW SCREEN *** 870 : 880 PRINT"[147][150] [205]AGIC [211]QUARE [199]ENERATOR" 890 X=2:Y=1:CB=12:GOSUB90:PRINTTAB(9)"[154][193]" 900 X=22:GOSUB90:PRINTTAB(30)"[154][194]" 910 X=12:Y=12:CB=7:GOSUB90:PRINTTAB(14)"[154][205][193][199][201][195] [211][209][213][193][210][197]" 920 POKE214,14:PRINT 930 PRINT" [176][192][192][192][192][192][174]"TAB(31)"[176][192][192][192][192][192][192][174]" 940 PRINT" [221][155][211][208][193][195][197][221]"TAB(31)"[221][155][210][197][212][213][210][206][221]" 950 PRINT" [173][192][192][192][192][192][189]"TAB(31)"[173][192][192][192][192][192][192][189]" 960 PRINT"[153] [193]NOTHER"TAB(33)"[205]ENU" 970 PRINT" [211]QUARE" 980 : 990 :REM *** FILL BOXES *** 1000 : 1010 FORI=0TO4:FORJ=0TO4:F(I,J)=0:NEXT:NEXT 1020 U=0:GOSUB280 1030 X=2:Y=1:CT=3:GOSUB190 1040 U=1:GOSUB280:X=22:GOSUB190 1050 FORI=0TO4:FORJ=0TO4:D(I,J)=D(I,J)+F(I,J):NEXT:NEXT 1060 GOSUB430:Y=12:X=12:CT=15:GOSUB190:POKEV+21,0 1070 POKE198,0 1080 GETA$:IFA$<>" "ANDA$<>CHR$(13)THEN1080 1090 IFA$=" "THENGOSUB90:GOTO890 1120 GOTO670 1230 : 1240 :REM *** LOADSTAR *** 1250 : 1260 PRINTTAB(13)" [209]UIT? (Y/N) [145]" 1270 GETA$:IFA$<>"Y"ANDA$<>"N"THEN1270 1280 IFA$="N"THEN770 1290 PRINT"[147]" 1300 GOTO40000 2000 : 2010 :REM *** TUTORIAL *** 2020 : 2030 PRINT"[147][129] [200]OW [212]O [205]AKE A 5 X 5 [205]AGIC [211]QUARE" 2040 PRINT"[155] [198]IRST OF ALL, LET'S DEFINE '[205]AGIC" 2050 PRINT"[211]QUARE'. [201]T'S A SQUARE MATRIX OF" 2060 PRINT"NUMBERS WHOSE COLUMNS, ROWS AND" 2070 PRINT"DIAGONALS ALL ADD UP TO THE SAME NUMBER." 2080 PRINT"[145][212]HIS NUMBER IS ALWAYS THE SAME FOR ANY" 2090 PRINT"PARTICULAR ORDER OF MAGIC SQUARE. [212]HE" 2100 PRINT"FORMULA FOR FINDING THE NUMBER IS" 2110 PRINT"[159] (N * (N*N+1)) 2120 [153]" NUMBER = TANTANTANTANTANTANTANTANTANTANTANTANTAN 2130 PRINT" 2 2140 [153]"LIST(null)HE NUMBER (OR 'MAGIC CONSTANT') OF A" 2150 [153]"5 X 5 SQUARE IS THEREFORE 65. 2160 PRINT" [212]HE FOLLOWING TUTORIAL EXPLAINS ONE" 2170 PRINT"METHOD (OR ALGORITHM) FOR GENERATING UP" 2180 PRINT"TO 14,400 DIFFERENT 5 X 5 MAGIC SQUARES." 2190 GOSUB57 2200 PRINT"[147][155] [212]HIS ALGORITHM IS CALLED THE [211][213][208][197][210]-" 2210 PRINT"[199][197][207][205][197][212][210][201][195] [196][197][211][201][199][206] METHOD AND IS TAKEN" 2220 PRINT"FROM [202]IM [205]ORAN'S '[212]HE [215]ONDERS OF [205]AGIC" 2230 PRINT"[211]QUARES' BOOK. [212]HE METHOD WAS DEVISED" 2240 PRINT"BY [202]IM, HIMSELF." 2250 PRINT" [201]T INVOLVES CREATING TWO NON-MAGICAL" 2260 PRINT"[145]SQUARES AND ADDING THEM TOGETHER TO" 2270 PRINT"MAKE A THIRD SQUARE THAT [201][211] MAGICAL." 2280 PRINT" [194]OTH OF THE PRELIMINARY SQUARES" 2290 PRINT"ARE MADE THE SAME WAY. [212]HE DIFFERENCE" 2300 PRINT"IS THAT SQUARE [193] WILL CONTAIN THE" 2310 PRINT"NUMBERS 1, 2, 3, 4 AND 5, AND [211]QUARE [194]" 2320 PRINT"USES THE NUMBERS 0, 5, 10, 15 AND 20." 2340 PRINT" [204]ET'S LOOK AT [211]QUARE [193]." 2350 GOSUB57 2360 PRINT"[147]": 2370 X=2:Y=1:CB=12:GOSUB90:PRINTTAB(9)"[154][193]" 2380 FORI=0TO4:POKEV+I*2,SP(0,I*2):POKEV+1+I*2,SP(0,1+I*2):NEXT 2385 POKEV+16,0:POKEV+21,31 2390 POKE214,15:PRINT 2400 PRINT"[155] [212]HE BOXED SQUARES REPRESENT [202]IM'S" 2410 PRINT"[211][213][208][197][210]-[199][197][207][205][197][212][210][201][195] [196][197][211][201][199][206]. [210]EMEMBER THIS" 2420 PRINT"DESIGN - IT'S MAGICAL. 2430 [153]" (null)TART BY CHOOSING ANY NUMBER FROM" 2440 [153]"1 TO 5. LEFT$OW ABOUT 4? (null)UT IT IN THE" 2450 [153]"BOXED SQUARES." 2460 [153]"OPEN"[163]13)"4" 2462 [153]""[163]4)"4" 2464 [153]""[163]10)"4" 2466 [153]""[163]16)"4" 2468 [153]""[163]7)"4" 2470 [141]57:[141]65 2480 [153]"LIST (null)OW, USING THE FOUR OTHER NUMBERS," 2490 [153]"1, 2, 3 AND 5, ARRANGE THEM IN ANY" 2500 [153]"ORDER. LEFT$OW ABOUT 5-2-1-3? 2510 PRINT" [211]TARTING WITH THE SQUARE TO THE" 2520 PRINT"RIGHT OF A BOX, PLACE THESE FOUR" 2530 PRINT"NUMBERS [201][206] [211][197][209][213][197][206][195][197], LEFT TO RIGHT. [201]F" 2540 PRINT"YOU HIT THE END OF THE MATRIX, 'WRAP" 2545 PRINT"AROUND' TO THE SAME ROW.":GOSUB75 2550 PRINT"[159]"TAB(4)"2"TAB(7)"1"TAB(10)"3"TAB(13)""TAB(16)"5":GOSUB75 2560 PRINT""TAB(4)""TAB(7)"5"TAB(10)"2"TAB(13)"1"TAB(16)"3":GOSUB75 2570 PRINT""TAB(4)"1"TAB(7)"3"TAB(10)""TAB(13)"5"TAB(16)"2":GOSUB75 2580 PRINT""TAB(4)"5"TAB(7)"2"TAB(10)"1"TAB(13)"3"TAB(16)"":GOSUB75 2590 PRINT""TAB(4)"3"TAB(7)""TAB(10)"5"TAB(13)"2"TAB(16)"1":GOSUB75 2600 GOSUB57:GOSUB65 2610 PRINT"[155] [206]OTICE THAT NO ROW, COLUMN OR " 2620 PRINT"DIAGONAL HAS ANY NUMBER DUPLICATED." 2630 PRINT"[212]HIS IS THE SECRET OF THIS METHOD." 2640 PRINT" [206]OW LET'S DO THE SAME FOR [211]QUARE [194]," 2650 PRINT"WHICH IS SIMILAR TO [211]QUARE [193], BUT WHOSE" 2660 PRINT"NUMBERS ARE 5 TIMES LARGER." 2670 GOSUB57:GOSUB65 2680 X=22:GOSUB90:PRINTTAB(30)"[154][194]" 2690 POKEV+21,0:POKEV+16,18 2700 FORI=0TO4:POKEV+I*2,SP(1,I*2):POKEV+1+I*2,SP(1,1+I*2):NEXT 2710 POKEV+16,18:POKEV+21,31 2720 POKE214,14:PRINT 2730 PRINT"[155] [206]OTICE THAT THE [211][213][208][197][210]-[199][197][207][205][197][212][210][201][195]" 2740 PRINT"[196][197][211][201][199][206] FOR [211]QUARE [194] IS THE MIRROR IMAGE" 2750 PRINT"OF THE [196][197][211][201][199][206] FOR [211]QUARE [194]." 2760 PRINT" [206]OW, DO THE SAME AS BEFORE. [208]ICK" 2770 PRINT"0, 5, 10, 15 OR 20. [200]OW ABOUT 10? [208]UT" 2775 PRINT"THIS IN THE BOXED SQUARES.":GOSUB75 2780 PRINT"[159]"TAB(26)"10" 2782 PRINT""TAB(35)"10" 2784 PRINT""TAB(29)"10" 2786 PRINT""TAB(23)"10" 2788 PRINT""TAB(32)"10" 2790 GOSUB57:GOSUB65 2800 PRINT"[155] [193]S BEFORE, TAKE THE REMAINING" 2810 PRINT"NUMBERS AND ARRANGE THEM IN ANY ORDER." 2820 PRINT"LET'S SAY, 0-20-15-5." 2830 PRINT" [208]UT THEM IN [211]QUARE [194] AS YOU DID" 2840 PRINT"IN [211]QUARE [193], 'WRAPPING AROUND' IF YOU" 2850 PRINT"HIT THE RIGHT EDGE." 2860 PRINT"[159]"TAB(23)" 5"TAB(26)""TAB(29)" 0"TAB(32)"20"TAB(35)"15":GOSUB75 2870 PRINT""TAB(23)" 0"TAB(26)"20"TAB(29)"15"TAB(32)" 5"TAB(35)"":GOSUB75 2880 PRINT""TAB(23)"15"TAB(26)" 5"TAB(29)""TAB(32)" 0"TAB(35)"20":GOSUB75 2890 PRINT""TAB(23)""TAB(26)" 0"TAB(29)"20"TAB(32)"15"TAB(35)" 5":GOSUB75 2900 PRINT""TAB(23)"20"TAB(26)"15"TAB(29)" 5"TAB(32)""TAB(35)" 0":GOSUB75 2910 GOSUB57:GOSUB65 2915 POKEV+21,0 2920 PRINT"[155] [217]OU NOW HAVE THE TWO PRELIMINARY" 2930 PRINT"SQUARES DONE. [193]LL YOU HAVE TO DO IS" 2940 PRINT"ADD THESE TWO SQUARES TOGETHER. [217]OU" 2950 PRINT"DO THIS BY ADDING THE TOP LEFT SQUARE" 2960 PRINT"OF [193] TO THE TOP LEFT SQUARE OF [194]. [212]HE" 2970 PRINT"SUM GOES IN THE TOP LEFT SQUARE OF YOUR" 2980 PRINT"[205]AGIC [211]QUARE. [195]ONTINUE THIS FOR THE" 2990 PRINT"REST OF THE TWENTY-FIVE SQUARES." 3000 GOSUB57:GOSUB65 3010 Y=12:X=12:CB=7:GOSUB90 3015 POKE214,12:PRINT 3020 PRINT"[159]"TAB(13)" 7"TAB(16)"11"TAB(19)" 3"TAB(22)"24"TAB(25)"20":GOSUB75 3030 PRINT"[159]"TAB(13)" 4"TAB(16)"25"TAB(19)"17"TAB(22)" 6"TAB(25)"13":GOSUB75 3040 PRINT"[159]"TAB(13)"16"TAB(16)" 8"TAB(19)"14"TAB(22)" 5"TAB(25)"22":GOSUB75 3050 PRINT"[159]"TAB(13)"15"TAB(16)" 2"TAB(19)"21"TAB(22)"18"TAB(25)" 9":GOSUB75 3060 PRINT"[159]"TAB(13)"23"TAB(16)"19"TAB(19)"10"TAB(22)"12"TAB(25)" 1":GOSUB75 3070 PRINT"[145][145][145][145][150] [214]OILA!!!"TAB(30)"[145][193] [205]AGIC[157][157][157][157][157][157][157][157][211]QUARE!!!" 3080 POKE214,23:PRINT:PRINT" [158][208]RESS [211][208][193][195][197] [158]FOR MENU":POKE198,0 3090 GETA$:IFA$<>" "THEN3090 3095 GOTO670 10000 D=PEEK(186):N$="B.MAGIC SQUARES":OPEN15,D,15,"S0:"+N$:CLOSE15:SAVEN$,D:END 40000 FORI=8TO29:POKE820+I,I:NEXT:IFDV>8ANDDV<30THENPOKE828,DV:POKE820+DV,8 40010 A$="PRESENTER":GOSUB40030:A$="HELLO CONNECT":GOSUB40030 40020 PRINT"[147]":POKE53272,23:POKE186,8:POKE2048,0:POKE44,8:POKE43,1:END 40030 FORJ=8TO29:I=PEEK(820+J):IFI=14THENNEXT 40040 CLOSE2:OPEN2,I,2:CLOSE2:IFSTTHEN40060 40050 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN40070 40060 NEXT:RETURN 40070 A$="HELLO CONNECT":Q$=CHR$(34):POKE646,PEEK(53281):PRINT"[147]":POKE53272,23 40080 PRINT"[147]P[207]2048,0:P[207]44,8:P[207]43,1:P[207]56,160:P[207]55,0:CLR:L[207]"Q$A$Q$","I 40090 PRINT"RUN:":POKE631,13:POKE632,13:POKE198,2:END 60000 PRINT"[147]":Z$=" [152] ":POKE214,10:PRINT 60010 PRINT" [155][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]":FORI=0TO11:PRINTZ$:NEXT 60020 PRINT" [151][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][185][152]" 60030 Z$(0)="5X5 [205][193][199][201][195] [211][209][213][193][210][197] [205][193][203][197][210] 60040 Z$(2)[178]"BY (null)NEES LENALHOON 60050 Z$(4)="(C) 1997 BY [202] & [198] [208]UBLISHING, [201]NC." 60060 Z$(6)="[212]HIS PROGRAM IS NOT SHAREWARE 60070 Z$(7)[178]"OR IN THE PUBLIC DOMAIN." 60080 Z$(9)[178]"1-800-594-3370 OR 1-318-221-8718 60090 POKE214,12:PRINT:FORI=0TO9:PRINTTAB(20-(LEN(Z$(I))/2))""Z$(I):NEXT:RETURN